//package work.rightAnswer;
//
//import java.util.HashMap;
//import java.util.Map;
//
//class Solution_76 {
//    public String minWindow(String s, String t) {
//        //创建map储存字符在窗口内还差多少个 key：字符 value:差多少个
//        Map<Character,Integer> map = new HashMap<>();
//        int tLen = t.length();
//        for (int i = 0; i <tLen ; i++) {
//            char c = t.charAt(i);
//            map.put(c,map.getOrDefault(c,0)+1);
//        }
//
//        int left = 0;
//        int right = 0;
//        int count = 0;
//        String res = "";
//        //遍历逻辑：
//        //left不动 right++右移
//        //1.如果 map.containsKey(chars[right-1])==true ,map.put(chars[right-1],原来-1)
//        //1.1  if(map.get(chars[right-1])>=0) count++;
//        //1.1 if(count==tLen) while() left++
//        //1.1.1 如果map不含key,left++;
//        //1.1.2 如果含key , 再判断是不是map.get(chars[left])==0,不是，value值++;是的话，结束while循环
//        //1.1 res = res==""?s.subString(left,right): 短的
//        //1.2  if(map.get(chars[right-1])<0)
//        //1.2.1 if(count<tLen) continue;
//        //1.2.2 if(count==tlen) while循环,left++,与1.1之后的步骤一样
//        //2.如果不含key，continue;
//        char[] chars = s.toCharArray();
//        while (right<chars.length){
//            //left不动 right++右移
//            right++;
//            char cur = chars[right-1];
//            //2.如果不含key，continue;
//            if(!map.containsKey(cur)){
//                continue;
//            }
//            //1.如果 map.containsKey(chars[right-1])==true ,map.put(chars[right-1],原来-1)
//            int value = map.get(cur);
//            map.put(cur,value-1);
//
//            //1.1  if(map.get(chars[right-1])>=0) count++;
//            if(value>0){
//                count++;
//                //1.1 if(count==tLen) while() left++
//                if(count==tLen){
//                    while (true){
//                        char leftCur = chars[left];
//                        //1.1.2 如果含key , 再判断是不是map.get(chars[left])==0,不是，value值++;是的话，结束while循环
//                        if(map.containsKey(leftCur)){
//                            if(map.get(leftCur)==0){
//                                break;
//                            }else {
//                                map.put(leftCur,map.get(leftCur)+1);
//                            }
//                        }
//                        //1.1.1 如果map不含key,left++;
//                        left++;
//                    }
//                    //1.1 res = res==""?s.subString(left,right): 短的
//                    String substring = s.substring(left, right);
//                    if(res==""||res.length()>substring.length()){
//                        res = substring;
//                    }
//
//                }
//                //1.2  if(map.get(chars[right-1])<0)
//            }else {
//                //1.2.1 if(count<tLen) continue;
//                if(count<tLen){
//                    continue;
//                }
//                //1.2.2 if(count==tlen) while循环,left++,与1.1之后的步骤一样
//                while (true){
//                    char leftCur = chars[left];
//                    //1.1.2 如果含key , 再判断是不是map.get(chars[left])==0,不是，value值++;是的话，结束while循环
//                    if(map.containsKey(leftCur)){
//                        if(map.get(leftCur)==0){
//                            break;
//                        }else {
//                            map.put(leftCur,map.get(leftCur)+1);
//                        }
//                    }
//                    //1.1.1 如果map不含key,left++;
//                    left++;
//                }
//                //1.1 res = res==""?s.subString(left,right): 短的
//                String substring = s.substring(left, right);
//                if(res==""||res.length()>substring.length()){
//                    res = substring;
//                }
//            }
//
//        }
//
//        return res;
//    }
//}